package SecondeStage.ChangYongLei.Arrays;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class ArraysMethod01 {
    public static void main(String[] args) {
        // 1.遍历数组，直接使用Arrays.toString方法，显示数组
        Integer[] integers ={1,2,3};
        System.out.println(Arrays.toString(integers));

        //2. 数组排序,可以使用冒泡排序，也可以使用Arrays提供的sort方法
        Integer[] integers2 ={3,2,4};
        Arrays.sort(integers2);
        // 数组是引用类型，排序后会直接影响到实参integers2
        System.out.println(Arrays.toString(integers2));
        // sort是重载的，也可以通过传入一个接口Comparator实现定制排序。调用定制排序时，传入两个参数,
        // (1) 排序的数组 (2) 实现了Comparator接口的匿名内部类，要求实现compare方法
        Arrays.sort(integers2, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
//                return o1-o2; //升序
                return o2-o1; // 降序
            }
        });
        System.out.println(Arrays.toString(integers2));

        //3. binarySearch 通过二分搜素法进行查找，要求数组必须是有序的;如果元素不存在，返回-1
        int index = Arrays.binarySearch(integers2,3);
        System.out.println(index);

        //4. copyOf 数组元素的复制:
        //从数组元素中拷贝integers2.length-1个元素
        Integer[] newinteger = Arrays.copyOf(integers2,integers2.length-1);
        System.out.println(Arrays.toString(newinteger));
        // 如果拷贝的长度 > integers2.length 就在新数组后面增加null
        Integer[] newinteger2 = Arrays.copyOf(integers2,integers2.length+1);
        System.out.println(Arrays.toString(newinteger2));

        //5. ill 数组元素填充
        Integer[] num =new Integer[]{9,3,2};
        // 使用99填充（替换）所有元素
        Arrays.fill(num,99);
        System.out.println(Arrays.toString(num));

        //6. equals 比较两个数组元素内容是否完全一致
        Integer[] arr={1,2,56,78};
        Integer[] arr2={1,2,56,78};
        boolean equals = Arrays.equals(arr,arr2);
        System.out.println(equals);


        //7. asList 将一组值，转换成list
        List asList = Arrays.asList(2,3,4,5,6,7);
        System.out.println("asList的运行类型："+asList.getClass());
    }
}
